/*
 * helper_functions.h
 *
 *  Created on: May 12, 2010
 *      Author: snirgaz
 */

#ifndef HELPER_FUNCTIONS_H_
#define HELPER_FUNCTIONS_H_
#define PI 3.14159265358979323846264338327950288
#ifdef POT_AZIZ
#define LAMBDA_ZERO 6.0596
#define R_ZERO 2.9673
#endif
#define SIN_T 0.8660254037
#define COS_T 0.5
#define INV_TAN_T -0.5773502691896257645091487805019
#define INV_SIN_T 1.1547005383792517
#define MKL_Complex16 complex<double>
#define NUM_OF_MOVES 4
// #define NDEBUG
// #define BOOST_DISABLE_ASSERTS

#include <yaml-cpp/yaml.h>
#include <boost/assign/std/vector.hpp>
#include <vector>
#include <array>
#include <list>
#include <string>
#include <algorithm>
#include <numeric>
#include <complex>
#include <iostream>
#include <fstream>
#include "mathimf.h"
#include <limits.h>
#include <blitz/array.h>
#include "pugixml.hpp"
#include <cassert>
#include "boost/progress.hpp"
#include "boost/lexical_cast.hpp"

#include "H5Cpp.h"

enum OC {
	OPEN, CLOSED
};
#include <boost/ptr_container/ptr_vector.hpp>
#include <boost/ptr_container/ptr_list.hpp>
#include <boost/chrono.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/shared_array.hpp>
#include <boost/scoped_array.hpp>
#include <boost/scoped_ptr.hpp>
#include <boost/assign/list_of.hpp>
#include <boost/assign/list_inserter.hpp>
#include "boost/tuple/tuple.hpp"
//#include <boost/foreach.hpp>
///////////////////////////////////////////////////////
// Typdefs

typedef boost::chrono::system_clock::time_point TimePoint;
typedef boost::chrono::duration<double, boost::ratio<3600> > Hour;

// Accumulator
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics/stats.hpp>
#include <boost/accumulators/statistics/mean.hpp>
#include <boost/accumulators/statistics/moment.hpp>

namespace ba=boost::accumulators;
typedef ba::accumulator_set<double, ba::stats<ba::tag::mean > > acc;

#endif /* HELPER_FUNCTIONS_H_ */

